home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / oldwish / RCS / wishInt.h,v < prev    next >
Encoding:
Text File  |  1989-01-11  |  20.2 KB  |  677 lines

  1. head     1.4;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.4
  10. date     89.01.11.11.58.53;  author mlgray;  state Exp;
  11. branches ;
  12. next     1.3;
  13.  
  14. 1.3
  15. date     88.11.03.19.45.37;  author mlgray;  state Exp;
  16. branches ;
  17. next     1.2;
  18.  
  19. 1.2
  20. date     88.11.02.14.52.37;  author mlgray;  state Exp;
  21. branches ;
  22. next     1.1;
  23.  
  24. 1.1
  25. date     88.10.03.12.49.03;  author mlgray;  state Exp;
  26. branches ;
  27. next     ;
  28.  
  29.  
  30. desc
  31. @X11: works pretty much now.
  32. @
  33.  
  34.  
  35. 1.4
  36. log
  37. @Temporary checkin
  38. @
  39. text
  40. @/*
  41.  * wishInt.h --
  42.  *
  43.  *    Internal declarations for wish display.
  44.  *
  45.  * Copyright 1987 Regents of the University of California
  46.  * All rights reserved.
  47.  * Permission to use, copy, modify, and distribute this
  48.  * software and its documentation for any purpose and without
  49.  * fee is hereby granted, provided that the above copyright
  50.  * notice appear in all copies.  The University of California
  51.  * makes no representations about the suitability of this
  52.  * software for any purpose.  It is provided "as is" without
  53.  * express or implied warranty.
  54.  *
  55.  * $Header: /a/newcmds/wish/RCS/wishInt.h,v 1.3 88/11/03 19:45:37 mlgray Exp Locker: mlgray $ SPRITE (Berkeley)
  56.  */
  57.  
  58. #ifndef _WISHINT
  59. #define _WISHINT
  60.  
  61. #include <sys/param.h>
  62. #ifndef AllPlanes
  63. #include <X11/Xlib.h>
  64. #endif
  65. #ifndef USPosition
  66. #include <X11/Xutil.h>
  67. #endif
  68. #include "cmd.h"
  69. #include "mx.h"
  70. #include "tcl.h"
  71.  
  72. #ifndef Boolean
  73. #define Boolean    int
  74. #define FALSE    0
  75. #define TRUE    1
  76. #endif /* Boolean */
  77.  
  78.  
  79. /*
  80.  * Largest number of ASCII characters required to represent an integer.
  81.  */
  82. #define CVT_INT_BUF_SIZE 34
  83.  
  84. #define    WISH_ROW_SPACING    1    /* a pleasant amount */
  85. #define    WISH_COLUMN_SPACING    15    /* another pleasant amount */
  86. #define UNINITIALIZED        -1    /* number of elements uninitialized */
  87.  
  88. /*
  89.  * To get a control character.
  90.  */
  91. #define    ctrl(c)    (c - 'a' + 1)
  92.  
  93. /*
  94.  * To determine whether finding file system attributes for a file is necessary.
  95.  */
  96. #define WISH_ATTR_NECESSARY_P\
  97.     ((aWindow->displayInstructions & ~WISH_NAME_FIELD) != 0) || \
  98.     ((aWindow->sortingInstructions & ~WISH_ALPHA_SORT) != 0) ? TRUE : FALSE
  99.  
  100. #define WISH_CHAR_TO_WIDTH(numChars, fontPtr)\
  101.     ((numChars) * XTextWidth(fontPtr, "W", 1))
  102.  
  103. /*
  104.  * Sorting flags are a bitwise and of one of the methods
  105.  * with or without "reverse."
  106.  */
  107. /* methods */ 
  108. #define    WISH_ALPHA_SORT    0x01    /* by alphabetical order */
  109. #define    WISH_ATIME_SORT    0x02    /* by access time */
  110. #define    WISH_MTIME_SORT    0x04    /* by data modify time */
  111. #define    WISH_DTIME_SORT    0x08    /* by descriptor modify time */
  112. #define    WISH_SIZE_SORT    0x10    /* by size */
  113. /* reverse */
  114. #define    WISH_REVERSE_SORT    0x20    /* whether to show in reverse order */
  115.  
  116. /*
  117.  * Display flags show which fields should be present in the display.
  118.  */
  119. #define    WISH_NAME_FIELD    0x001    /* name of the file */
  120. #define    WISH_FULLNAME_FIELD    0x002    /* full pathname to the file */
  121. #define    WISH_ATIME_FIELD    0x004    /* access time */
  122. #define    WISH_MTIME_FIELD    0x008    /* data modify time */
  123. #define    WISH_DTIME_FIELD    0x010    /* descriptor modify time */
  124. #define    WISH_SIZE_FIELD    0x020    /* size of the file in bytes */
  125. #define    WISH_DEVICE_FIELD    0x040    /* major and minor device numbers */
  126. #define    WISH_PERM_FIELD    0x080    /* permissions, owner and group */
  127. #define    WISH_TYPE_FIELD    0x100    /* directory? link? ascii? etc.... */
  128.  
  129. #define    WISH_LEFT_BUTTON    0x01
  130. #define    WISH_MIDDLE_BUTTON    0x02
  131. #define    WISH_RIGHT_BUTTON    0x04
  132. #define    WISH_META_BUTTON    0x08
  133. #define    WISH_SHIFT_BUTTON    0x10
  134.  
  135. #define    WISH_MAX_RULE_LENGTH    (2 * 1024)    /* for now the max length
  136.                          * of a rule stored in a
  137.                          * .wish file is twice
  138.                          * the max length of a path.
  139.                          * No good reason, just easy. */
  140. /* typedefs for use below */
  141. typedef    struct WishFile    WishFile;
  142. typedef    struct WishGroup    WishGroup;
  143. typedef    struct WishColumn    WishColumn;
  144. typedef    struct WishWindow    WishWindow;
  145. typedef    struct WishSelection    WishSelection;
  146. typedef    struct WishGroupBinding    WishGroupBinding;
  147.  
  148. /*
  149.  * Stuff we need to know about particular file entries.
  150.  * This will contain more information along the lines of a struct    direct
  151.  * soon.  For now, we only keep the name.
  152.  */
  153. struct WishFile {
  154.     char    *name;        /* Name of the file */
  155.     struct stat    *attrPtr;    /* file attributes */
  156.     int        length;        /* length of name in pixels */
  157.     int        x;        /* x and y coords of file name */
  158.     int        y;
  159.     int        myColumn;    /* which column the file is in */
  160.     Boolean    selectedP;    /* is the file selected? */
  161.     Boolean    lineP;        /* is whole line selected? */
  162.     Boolean    highlightP;    /* whether or not it is highlighted */
  163.     WishGroup    *myGroupPtr;    /* ptr back to my group */
  164.     struct    WishFile    *nextPtr;    /* the next one */
  165. };
  166.  
  167. /*
  168.  * Each group has a selection rule associated with it, and the files selected
  169.  * by that rule.
  170.  */
  171. #define    COMPARISON    0
  172. #define    PROC        1
  173. struct WishGroup {
  174.     int        myColumn;        /* which column I'm in */
  175.     Window    headerWindow;        /* window for header */
  176.     int        x;            /* x and y coords of group header */
  177.     int        y;
  178.     int        width;            /* width and height of header */
  179.     int        height;
  180.     int        entry_x;        /* coords of old entry window */
  181.     int        entry_y;
  182.     int        entry_width;
  183.     WishFile    *fileList;        /* list of selected files */
  184.     int        defType;        /* type of rule, tcl proc or pattern */
  185.     char    *rule;            /* selection rule */
  186.     WishGroupBinding    *groupBindings;    /* mouse button/command bindings */
  187.     int        length;            /* length of rule or name in pixels */
  188.     char    editHeader[WISH_MAX_RULE_LENGTH];    /* for entry window */
  189.     Boolean    selectedP;        /* is the group selected? */
  190.     Boolean    highlightP;        /* whether or not it is highlighted */
  191.     struct    WishGroup    *nextPtr;    /* the next one in list */
  192. };
  193.  
  194. /*
  195.  * Per-column information.  This data structure could be extended to point to
  196.  * the first file name and group appearing in the column so that redraw
  197.  * could be done be region, perhaps just columns.  Things seem fast enough
  198.  * for now, though, so I won't bother.
  199.  */
  200. struct WishColumn {
  201.     int        x;        /* x coordinate of left side of column */
  202. };
  203.  
  204. /*
  205.  * For each browser instance, there is a structure of this sort stored
  206.  * in the WishWindowTable.  The structure contains information about
  207.  * the window that the file system client wants to keep.
  208.  */
  209. struct WishWindow {
  210.     Window    surroundingWindow;        /* the surrounding window in
  211.                          * which the subwindows are
  212.                          * packed */
  213.     Window    titleWindow;            /* displays the full pathname
  214.                          * of the current directory and
  215.                          * is editable for people to
  216.                          * type in new desired dir */
  217.     Window    divider1Window;            /* thin window for a border
  218.                          * between title and menu */
  219.     Window    menuBar;            /* menu window under title */
  220.     Window    divider2Window;            /* thin window for a border
  221.                          * between menu and sort */
  222.     Window    sortWindow;            /* displays sorting method */
  223.     Window    divider3Window;            /* thin window for a border
  224.                          * between sort and fields */
  225.     Window    fieldsWindow;            /* window listing fields in
  226.                          * display (time, size, etc) */
  227.     Window    divider4Window;            /* thin window for a border
  228.                          * between fields and display */
  229.     Window    scrollWindow;            /* scrollbar window */
  230.     Window    divider5Window;            /* thin window for a border
  231.                          * between scrollbar and
  232.                          * display */
  233.     Window    txOutsideWindow;        /* tx window */
  234.     Window    divider6Window;            /* thin window for a border
  235.                          * between tx and display */
  236.     Window    displayWindow;            /* the display window */
  237.     int        windowHeight;            /* height of display window */
  238.     int        windowWidth;            /* width of display window */
  239.     Boolean    resizeP;            /* can we change geometry? */
  240.     Boolean    pickSizeP;            /* size window initially */
  241.     int        foreground;            /* foreground color */
  242.     int        background;            /* background color */
  243.     int        border;                /* border color */
  244.     int        selection;            /* selection color */
  245.     int        borderWidth;            /* width of surrounding border,
  246.                          * not really used, maybe... */
  247.     XFontStruct    *fontPtr;            /* font used for display */
  248.     GC        textGc;
  249.     GC        reverseGc;
  250.     int        titleForeground;
  251.     int        titleBackground;
  252.     int        titleBorder;
  253.     XFontStruct    *titleFontPtr;            /* font used for title */
  254.     int        txForeground;
  255.     int        txBackground;
  256.     int        txBorder;
  257.     int        menuForeground;
  258.     int        menuBackground;
  259.     int        menuBorder;
  260.     int        sortForeground;
  261.     int        sortBackground;
  262.     int        fieldsForeground;
  263.     int        fieldsBackground;
  264.     int        entryForeground;
  265.     int        entryBackground;
  266.     int        scrollForeground;
  267.     int        scrollBackground;
  268.     int        scrollElevator;
  269.     char    *geometry;            /* window geometry */
  270.     char    dir[MAXPATHLEN+1];    /* The current dir of the
  271.                          * display.  This is the full
  272.                          * pathname of the top node
  273.                          * in the display. */
  274.     char    editDir[MAXPATHLEN+1];    /* Contains dir
  275.                          * name too, but is meant for
  276.                          * editing in the title window.
  277.                          * By having both dir and
  278.                          * editDir, we don't lose the
  279.                          * actual dir when users type
  280.                          * in a potential new dir. */
  281.     int        displayInstructions;        /* display field flags */
  282.     int        sortingInstructions;        /* sorting flags */
  283.     int        maxNameLength;            /* strln of longest name */
  284.     int        maxEntryWidth;            /* longest entry width in chars,
  285.                          * not window units */
  286.     int        numElements;            /* total number of files */
  287.     int        numGroups;            /* number of groups */
  288.     int        numHiddenGroups;        /* number of groups hidden
  289.                          * because they are empty. */
  290.     Boolean    hideEmptyGroupsP;        /* whether or not to display
  291.                          * headers for empty groups. */
  292.     int        totalDisplayEntries;        /* total # of files + headers
  293.                          * plus spaces to display. */
  294.     int        numRows;            /* number of rows in display */
  295.     int        rowHeight;            /* height in pixels of rows */
  296.     int        firstElement;            /* first visible element */
  297.     int        lastElement;            /* last visible element */
  298.     int        columnWidth;            /* width of columns in pixels */
  299.     WishColumn    *columns;        /* dynamic array of columns */
  300.     int        usedCol;            /* index of last column in
  301.                          * display currently used */
  302.     int        maxColumns;            /* max # of columns allocated */
  303.     WishGroup    *groupList;            /* list of groups */
  304.     WishSelection    *selectionList;        /* list of selected stuff */
  305.     Cmd_Table    cmdTable;            /* window command interface */
  306.     Tcl_Interp    *interp;            /* tcl interpreter */
  307. #ifdef NOTDEF
  308.     char    *cmdString;            /* command in a cmd window */
  309. #endif NOTDEF
  310.     Boolean    dontDisplayChangesP;        /* to keep commands from
  311.                          * attempting redisplay while
  312.                          * we're building the
  313.                          * display from sourced
  314.                          * startup files. */
  315.     Boolean    notifierP;            /* prevent redisplay during
  316.                          * Sx_Notifies. */
  317. };
  318.  
  319. /*
  320.  * For keeping lists of selected stuff.
  321.  */
  322. struct WishSelection {
  323.     Boolean        fileP;        /* if false, it's a group */
  324.     Boolean        lineP;        /* if true, then the whole line */
  325.     union {
  326.     WishFile    *filePtr;
  327.     WishGroup    *groupPtr;
  328.     } selected;
  329.     struct WishSelection    *nextPtr;
  330. };
  331.  
  332. struct WishGroupBinding {
  333.     int        button;
  334.     char    *command;
  335.     struct WishGroupBinding    *nextPtr;
  336. };
  337.  
  338. /* Structure used to build command tables. */
  339. typedef    struct    {
  340.     char    *name;            /* command name */
  341.     int        (*proc)();        /* procedure to process command */
  342. } CmdInfo;
  343.  
  344.  
  345. /* externs */
  346.  
  347. extern    XContext    wishWindowContext;    /* table of window data */
  348. extern    XContext    wishGroupWindowContext;/* table of group data */
  349. extern    int        wishWindowCount;    /* reference count of windows */
  350.                             /* error reporting */
  351. extern    char        wishErrorMsg[/* (2*MAXPATHLEN + 50) */];
  352. extern    Boolean        wishDebugP;        /* whether debugging is on */
  353. extern    Boolean        wishResizeP;        /* can application resize? */
  354. extern    Boolean        wishPickSizeP;    /* can appl. pick size? */
  355. extern    Display        *wishDisplay;        /* the display */
  356. extern    Boolean        wishShowEmptyGroupsP;    /* show headers with no files */
  357. extern    int        wishRootHeight;    /* info about root window */
  358. extern    int        wishRootWidth;
  359. extern    char        *wishApplication;    /* application name */
  360. extern    char        wishCurrentDirectory[];    /* keep track of
  361.                              * current directory */
  362.  
  363. /*    Commands in manual page. */
  364. extern    int    WishQuitCmd();
  365. extern    int    WishToggleSelectionCmd();
  366. extern    int    WishToggleSelEntryCmd();
  367. extern    int    WishCloseCmd();
  368. extern    int    WishRedrawCmd();
  369. extern    int    WishSelectionCmd();
  370. extern    int    WishChangeDirCmd();
  371. extern    int    WishMenuCmd();
  372. extern    int    WishSortFilesCmd();
  373. extern    int    WishChangeFieldsCmd();
  374. extern    int    WishChangeGroupCmd();
  375. extern    int    WishDefineGroupCmd();
  376. extern    int    WishOpenCmd();
  377. extern    int    WishExecCmd();
  378. extern    int    WishBindCmd();
  379. extern    int    WishGroupBindCmd();
  380. extern    int    WishResizeCmd();
  381. extern    int    WishPatternCompareCmd();
  382.  
  383. /* Other externs. */
  384. extern    void    WishEditDir();
  385. extern    void    WishEditRule();
  386. extern    void    WishSelectDir();
  387. extern    void    WishScroll();
  388. extern    WishWindow    *WishCreate();
  389. extern    void    WishInit();
  390. extern    int    WishGatherNames();
  391. extern    int    WishGatherSingleGroup();
  392. extern    void    WishSetPositions();
  393. extern    void    WishRedraw();
  394. extern    void    WishRedrawFile();
  395. extern    void    WishGetFileFields();
  396. extern    void    WishRedrawGroup();
  397. extern    void    WishSetWindowAndRowInfo();
  398. extern    void    WishHandleDrawingEvent();
  399. extern    void    WishHandleDestructionEvent();
  400. extern    void    WishHandleMonitorUpdates();
  401. extern    void    WishMouseEvent();
  402. extern    void    WishHighlightMovement();
  403. extern    void    WishHandleEnterEvent();
  404. extern    char    *WishCanonicalDir();
  405. extern    void    WishGarbageCollect();
  406. extern    void    WishChangeSelection();
  407. extern    void    WishClearWholeSelection();
  408. extern    WishGroup    *WishMapCoordsToGroup();
  409. extern    WishFile    *WishMapCoordsToFile();
  410. extern    void    WishCmdTableInit();
  411. extern    void    WishAddGroupBinding();
  412. extern    void    WishDeleteGroupBindings();
  413. extern    char    *WishGetGroupBinding();
  414. extern    int    WishDoCmd();
  415. extern    void    WishChangeDir();
  416. extern    void    WishSourceConfig();
  417. extern    void    Cmd_BindingCreate();
  418. extern    char    *Cmd_BindingGet();
  419. extern    void    Cmd_BindingDelete();
  420. extern    Boolean    Cmd_EnumBindings();
  421. extern    int    Cmd_MapKey();
  422. extern    Cmd_Table    Cmd_TableCreate();
  423. extern    void    Cmd_TableDelete();
  424. extern    void    WishCvtToPrintable();
  425. extern    void    WishKeyProc();
  426. extern    void    WishMenuProc();
  427. extern    void    WishMenuEntryProc();
  428. extern    void    WishSetSort();
  429. extern    void    WishGetCompareProc();
  430. extern    void    WishGarbageGroup();
  431. extern    int    WishDoTclSelect();
  432. extern    void    WishDumpState();
  433.  
  434. /* should be in string.h! */
  435. extern    char    *index();
  436.  
  437. #endif _WISHINT
  438. @
  439.  
  440.  
  441. 1.3
  442. log
  443. @Fixed many bugs - notifiers no longer trash the display.
  444. @
  445. text
  446. @d16 1
  447. a16 1
  448.  * $Header: /a/newcmds/wish/RCS/wishInt.h,v 1.2 88/11/02 14:52:37 mlgray Exp Locker: mlgray $ SPRITE (Berkeley)
  449. @
  450.  
  451.  
  452. 1.2
  453. log
  454. @changed fsflat to wish
  455. @
  456. text
  457. @d16 1
  458. a16 1
  459.  * $Header: wishInt.h,v 1.1 88/10/03 12:49:03 mlgray Exp $ SPRITE (Berkeley)
  460. d19 2
  461. a20 2
  462. #ifndef _FSFLATINT
  463. #define _FSFLATINT
  464. d45 2
  465. a46 2
  466. #define    FSFLAT_ROW_SPACING    1    /* a pleasant amount */
  467. #define    FSFLAT_COLUMN_SPACING    15    /* another pleasant amount */
  468. d57 3
  469. a59 3
  470. #define FSFLAT_ATTR_NECESSARY_P\
  471.     ((aWindow->displayInstructions & ~FSFLAT_NAME_FIELD) != 0) || \
  472.     ((aWindow->sortingInstructions & ~FSFLAT_ALPHA_SORT) != 0) ? TRUE : FALSE
  473. d61 1
  474. a61 1
  475. #define FSFLAT_CHAR_TO_WIDTH(numChars, fontPtr)\
  476. d69 5
  477. a73 5
  478. #define    FSFLAT_ALPHA_SORT    0x01    /* by alphabetical order */
  479. #define    FSFLAT_ATIME_SORT    0x02    /* by access time */
  480. #define    FSFLAT_MTIME_SORT    0x04    /* by data modify time */
  481. #define    FSFLAT_DTIME_SORT    0x08    /* by descriptor modify time */
  482. #define    FSFLAT_SIZE_SORT    0x10    /* by size */
  483. d75 1
  484. a75 1
  485. #define    FSFLAT_REVERSE_SORT    0x20    /* whether to show in reverse order */
  486. d80 9
  487. a88 9
  488. #define    FSFLAT_NAME_FIELD    0x001    /* name of the file */
  489. #define    FSFLAT_FULLNAME_FIELD    0x002    /* full pathname to the file */
  490. #define    FSFLAT_ATIME_FIELD    0x004    /* access time */
  491. #define    FSFLAT_MTIME_FIELD    0x008    /* data modify time */
  492. #define    FSFLAT_DTIME_FIELD    0x010    /* descriptor modify time */
  493. #define    FSFLAT_SIZE_FIELD    0x020    /* size of the file in bytes */
  494. #define    FSFLAT_DEVICE_FIELD    0x040    /* major and minor device numbers */
  495. #define    FSFLAT_PERM_FIELD    0x080    /* permissions, owner and group */
  496. #define    FSFLAT_TYPE_FIELD    0x100    /* directory? link? ascii? etc.... */
  497. d90 5
  498. a94 5
  499. #define    FSFLAT_LEFT_BUTTON    0x01
  500. #define    FSFLAT_MIDDLE_BUTTON    0x02
  501. #define    FSFLAT_RIGHT_BUTTON    0x04
  502. #define    FSFLAT_META_BUTTON    0x08
  503. #define    FSFLAT_SHIFT_BUTTON    0x10
  504. d96 1
  505. a96 1
  506. #define    FSFLAT_MAX_RULE_LENGTH    (2 * 1024)    /* for now the max length
  507. d149 1
  508. a149 1
  509.     char    editHeader[FSFLAT_MAX_RULE_LENGTH];    /* for entry window */
  510. d276 2
  511. d393 1
  512. d398 1
  513. a398 1
  514. #endif _FSFLATINT
  515. @
  516.  
  517.  
  518. 1.1
  519. log
  520. @Initial revision
  521. @
  522. text
  523. @d2 1
  524. a2 1
  525.  * fsflatInt.h --
  526. d4 1
  527. a4 1
  528.  *    Internal declarations for fsflat display.
  529. d16 1
  530. a16 1
  531.  * $Header: fsflatInt.h,v 1.16 88/06/10 13:15:47 mlgray Exp $ SPRITE (Berkeley)
  532. d98 1
  533. a98 1
  534.                          * .fsflat file is twice
  535. d102 6
  536. a107 6
  537. typedef    struct FsflatFile    FsflatFile;
  538. typedef    struct FsflatGroup    FsflatGroup;
  539. typedef    struct FsflatColumn    FsflatColumn;
  540. typedef    struct FsflatWindow    FsflatWindow;
  541. typedef    struct FsflatSelection    FsflatSelection;
  542. typedef    struct FsflatGroupBinding    FsflatGroupBinding;
  543. d114 1
  544. a114 1
  545. struct FsflatFile {
  546. d124 2
  547. a125 2
  548.     FsflatGroup    *myGroupPtr;    /* ptr back to my group */
  549.     struct    FsflatFile    *nextPtr;    /* the next one */
  550. d134 1
  551. a134 1
  552. struct FsflatGroup {
  553. d144 1
  554. a144 1
  555.     FsflatFile    *fileList;        /* list of selected files */
  556. d147 1
  557. a147 1
  558.     FsflatGroupBinding    *groupBindings;    /* mouse button/command bindings */
  559. d152 1
  560. a152 1
  561.     struct    FsflatGroup    *nextPtr;    /* the next one in list */
  562. d161 1
  563. a161 1
  564. struct FsflatColumn {
  565. d167 1
  566. a167 1
  567.  * in the FsflatWindowTable.  The structure contains information about
  568. d170 1
  569. a170 1
  570. struct FsflatWindow {
  571. d260 1
  572. a260 1
  573.     FsflatColumn    *columns;        /* dynamic array of columns */
  574. d264 2
  575. a265 2
  576.     FsflatGroup    *groupList;            /* list of groups */
  577.     FsflatSelection    *selectionList;        /* list of selected stuff */
  578. d281 1
  579. a281 1
  580. struct FsflatSelection {
  581. d285 2
  582. a286 2
  583.     FsflatFile    *filePtr;
  584.     FsflatGroup    *groupPtr;
  585. d288 1
  586. a288 1
  587.     struct FsflatSelection    *nextPtr;
  588. d291 1
  589. a291 1
  590. struct FsflatGroupBinding {
  591. d294 1
  592. a294 1
  593.     struct FsflatGroupBinding    *nextPtr;
  594. d306 3
  595. a308 3
  596. extern    XContext    fsflatWindowContext;    /* table of window data */
  597. extern    XContext    fsflatGroupWindowContext;/* table of group data */
  598. extern    int        fsflatWindowCount;    /* reference count of windows */
  599. d310 10
  600. a319 10
  601. extern    char        fsflatErrorMsg[/* (2*MAXPATHLEN + 50) */];
  602. extern    Boolean        fsflatDebugP;        /* whether debugging is on */
  603. extern    Boolean        fsflatResizeP;        /* can application resize? */
  604. extern    Boolean        fsflatPickSizeP;    /* can appl. pick size? */
  605. extern    Display        *fsflatDisplay;        /* the display */
  606. extern    Boolean        fsflatShowEmptyGroupsP;    /* show headers with no files */
  607. extern    int        fsflatRootHeight;    /* info about root window */
  608. extern    int        fsflatRootWidth;
  609. extern    char        *fsflatApplication;    /* application name */
  610. extern    char        fsflatCurrentDirectory[];    /* keep track of
  611. d323 18
  612. a340 18
  613. extern    int    FsflatQuitCmd();
  614. extern    int    FsflatToggleSelectionCmd();
  615. extern    int    FsflatToggleSelEntryCmd();
  616. extern    int    FsflatCloseCmd();
  617. extern    int    FsflatRedrawCmd();
  618. extern    int    FsflatSelectionCmd();
  619. extern    int    FsflatChangeDirCmd();
  620. extern    int    FsflatMenuCmd();
  621. extern    int    FsflatSortFilesCmd();
  622. extern    int    FsflatChangeFieldsCmd();
  623. extern    int    FsflatChangeGroupCmd();
  624. extern    int    FsflatDefineGroupCmd();
  625. extern    int    FsflatOpenCmd();
  626. extern    int    FsflatExecCmd();
  627. extern    int    FsflatBindCmd();
  628. extern    int    FsflatGroupBindCmd();
  629. extern    int    FsflatResizeCmd();
  630. extern    int    FsflatPatternCompareCmd();
  631. d343 33
  632. a375 33
  633. extern    void    FsflatEditDir();
  634. extern    void    FsflatEditRule();
  635. extern    void    FsflatSelectDir();
  636. extern    void    FsflatScroll();
  637. extern    FsflatWindow    *FsflatCreate();
  638. extern    void    FsflatInit();
  639. extern    int    FsflatGatherNames();
  640. extern    int    FsflatGatherSingleGroup();
  641. extern    void    FsflatSetPositions();
  642. extern    void    FsflatRedraw();
  643. extern    void    FsflatRedrawFile();
  644. extern    void    FsflatGetFileFields();
  645. extern    void    FsflatRedrawGroup();
  646. extern    void    FsflatSetWindowAndRowInfo();
  647. extern    void    FsflatHandleDrawingEvent();
  648. extern    void    FsflatHandleDestructionEvent();
  649. extern    void    FsflatHandleMonitorUpdates();
  650. extern    void    FsflatMouseEvent();
  651. extern    void    FsflatHighlightMovement();
  652. extern    void    FsflatHandleEnterEvent();
  653. extern    char    *FsflatCanonicalDir();
  654. extern    void    FsflatGarbageCollect();
  655. extern    void    FsflatChangeSelection();
  656. extern    void    FsflatClearWholeSelection();
  657. extern    FsflatGroup    *FsflatMapCoordsToGroup();
  658. extern    FsflatFile    *FsflatMapCoordsToFile();
  659. extern    void    FsflatCmdTableInit();
  660. extern    void    FsflatAddGroupBinding();
  661. extern    void    FsflatDeleteGroupBindings();
  662. extern    char    *FsflatGetGroupBinding();
  663. extern    int    FsflatDoCmd();
  664. extern    void    FsflatChangeDir();
  665. extern    void    FsflatSourceConfig();
  666. d383 8
  667. a390 8
  668. extern    void    FsflatCvtToPrintable();
  669. extern    void    FsflatKeyProc();
  670. extern    void    FsflatMenuProc();
  671. extern    void    FsflatMenuEntryProc();
  672. extern    void    FsflatSetSort();
  673. extern    void    FsflatGetCompareProc();
  674. extern    void    FsflatGarbageGroup();
  675. extern    int    FsflatDoTclSelect();
  676. @
  677.